package com.holly.unit.deform.api;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.holly.unit.db.api.pojo.page.PageResult;
import com.holly.unit.deform.api.pojo.route.DesignFormRouteDTO;
import com.holly.unit.deform.api.pojo.route.DesignFormRouteRequest;

import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 类描述: 表单设计器路由跳转配置表 API
 *
 * @author fxr
 * @version 1.0.0
 * @date 2022/4/2 10:03
 */
public interface DeformRouterApi<T> {

    /**
     * 新增
     *
     * @param designFormRouteRequest) 对象
     * @author holly
     * @Date:   2022-03-03
     */
    void add(DesignFormRouteRequest designFormRouteRequest);

    /**
     * 删除
     *
     * @param designFormRouteRequest) 对象
     * @author holly
     * @date 2020/10/29 17:43
     */
    void del(DesignFormRouteRequest designFormRouteRequest);

    /**
     * 修改
     *
     * @param designFormRouteRequest) 对象
     * @author holly
     * @Date:   2022-03-03
     */
    void edit(DesignFormRouteRequest designFormRouteRequest);

    /**
     * 查询详情
     *
     * @param designFormRouteRequest) id
     * @return 的详情
     * @author holly
     * @Date:   2022-03-03
     */
    DesignFormRouteDTO detail(DesignFormRouteRequest designFormRouteRequest);

    /**
     * 获取列表
     *
     * @param designFormRouteRequest) 对象
     * @return 列表
     * @author holly
     * @Date:   2022-03-03
     */
    List<DesignFormRouteDTO> findList(DesignFormRouteRequest designFormRouteRequest);

    /**
     * 获取列表（带分页）
     *
     * @param designFormRouteRequest) 查询条件
     * @return 带分页的列表
     * @author holly
     * @Date:   2022-03-03
     */
    PageResult<DesignFormRouteDTO> findPage(DesignFormRouteRequest designFormRouteRequest);


    /***
     * 导出excel
     * @param response
     */
    void export(HttpServletResponse response);

    /***
     * 泛型分页
     * @param t
     * @param paramMap
     * @return
     */
    PageResult<T> fetchPageList(T t,Map<String,String[]> paramMap);


    /**
     * 批量删除表单设计路由对象
     *
     * @param ids 表单设计器路由对象id
     * @author holly
     * @date 2020/10/29 17:43
     */
    void delBatch(List<String> ids);

    /**
     * 批量删除表单设计路由对象
     * @param ids 逗号分割拼接的id
     */
    void delBatch(String ids);

    /***
     * 编辑
     * @param t
     * @return
     */
    boolean editEntity(T t);

    /***
     * 查询实体信息
     * @param queryWrapper 查询条件
     * @return
     */
    T fetchEntity(LambdaQueryWrapper<T> queryWrapper);

    /***
     * 通过id查询实体信息
     * @param id
     * @return
     */
    T fetchEntityById(Serializable id);




}
